package com.zq.solution.algorithm.divideAndConquer;

/**
 * @ClassName Hanoi
 * @Description 汉诺塔问题
 * @Author ZQ
 * @Date 2020/10/26 21:35
 * @Version 1.0
 */
public class Hanoi {
    /**
     * @Description
     * ①、从初始塔座A上移动包含n-1个盘子到中介塔座B上。
     * ②、将初始塔座A上剩余的一个盘子（最大的一个盘子）放到目标塔座C上。
     * ③、将中介塔座B上n-1个盘子移动到目标塔座C上。
     * @Author ZHANGQIAO
     * @Date 2020/10/26 21:37
     * @param dish: 盘子个数
     * @param from: 初始塔座
     * @param temp: 中介塔座
     * @param to: 目标塔座
     **/
    public static void move(int dish,String from,String temp,String to){
        if(dish == 1){
            System.out.println("将盘子"+dish+"从塔座"+from+"移动到目标塔座"+to);
        }else{
            move(dish-1,from,to,temp);//A为初始塔座，B为目标塔座，C为中介塔座
            System.out.println("将盘子"+dish+"从塔座"+from+"移动到目标塔座"+to);
            move(dish-1,temp,from,to);//B为初始塔座，C为目标塔座，A为中介塔座
        }
    }

    public static void main(String[] args) {
        move(10,"A","B","C");
    }
}
